package _2观察者模式.Observable抽象类的使用;

import javax.swing.*;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import java.util.Observable;

// 被观察的输入框
public class InputTextSubject extends Observable {
    String content;
    JTextArea text;

    InputTextSubject() {
        text = new JTextArea(10, 15);
        text.setLineWrap(true);
        text.setWrapStyleWord(true);
        text.getDocument().addDocumentListener(new DocumentListener() {
            @Override
            public void insertUpdate(DocumentEvent e) {
                changedUpdate(e);
            }

            @Override
            public void removeUpdate(DocumentEvent e) {
                changedUpdate(e);
            }

            @Override
            public void changedUpdate(DocumentEvent e) {
                content = text.getText();
                setChanged();   // 标志修改
                notifyObservers(content);   // 通知观察者更新（推数据方式）
            }
        });
    }

    public String getContent() {
        return content;
    }

    public JTextArea getText() {
        return text;
    }
}
